上传时间:暂无
作者:暂无
文件大小:暂无
下载量:26
替换小米平板圆点鼠标指针
安装release页面的apk,并在lsposed管理器中勾选系统框架即可使用
通过hook系统框架中的MiuiMagicPointerService,修改被MIUI团队魔改过的圆形鼠标指针,提升鼠标操控时的定位精度
由于作者Java还没学完就开始制作这个项目,谷歌乱搜索才完成了这个项目,水平还不太够。
想做自定义鼠标指针的,但是能力有限,希望有大佬帮帮pull request。现在暂时算是最基本的功能做好了
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:14
一站式管理访问设备日志请求
Manage all device log access requests at once
GNU General Public License v3.0
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:14
为各种 MIUI / HyperOS 设备解除多小窗限制
Unlock multi freeform limits for MIUI / HyperOS devices
GNU General Public License v3.0
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:23
为小米平板提供一些增强功能
Provide some enhancements to Mi Pad
GNU General Public License v3.0
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:28
为小米平板5系列恢复键盘ESC键功能
Restore ESC function on Mi Pad 5 series
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:13
屏蔽指定配置变更导致的 Activity 重启
Prevent Activity restarts caused by configuration changes
GNU General Public License v3.0
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:13
为MIUI,Android 11及以上启用被隐藏的波浪充电动画
Enable the wave charge animation for MIUI, Android 11 and above
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:14
支持最新版和旧版时长限制和超级线路破解 问题反馈 QQ=>3238640698 QQ群=>578389871
1.QQ=> 3238640698 2.QQ群=> 578389871
从Release下载最新版本并安装到手机
GPL 3.0
如果这个工具对你有帮助可以请我喝杯咖啡
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:85
Displays quotes on your lockscreen, because why not.
This new fork will be continuously maintained as the original QuoteLock is no longer maintained and has been archived.
Long press on the quotes to show refresh and collect buttons:
Only near-AOSP Android ROMs are supported! This is due to the heavy lockscreen modifications made by different OEMs.(This app is also compatible with the official MIUI14 on default lockscreen confirmed by community members.)
After installing, please open the app at least once to allow the quote downloader service to run in the background.
Make sure to whitelist QuoteLockX if you are using a task-killer app! They can interfere with the download service.
Distributed under the MIT License.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:33
HypersStar
信hyper,得永生!
本项目源码
系统版本 | 安卓版本 | 支持状态 |
---|---|---|
HyperOS1.0 | 14 | 支持 |
HyperOS1.0 Beta | 15 | 支持 |
HyperOS2.0 | 15 | 支持 |
请在 LSPosed 中启用 HyperStar, 然后在 HyperStar 应用内启用功能后,重启作用域 (需要授予模块 Root 权限);
对于修改较多的第三方 Xiaomi HyperOS ROM
、修改较多的系统软件
,本模块不会适配 ,但也不保证功能一定失效,如若功能在此环境下出现异常,请关闭功能或者卸载模块;
目前 HyperStar 是基于 Android 15 的 Xiaomi HyperOS 2.0 的手机设备进行适配,功能并不能保证覆盖完整,请多多向我反馈!
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:38
自用模块。完美适用于FLYme 10.5.5.1A,附近的版本应该也适用,但是其他系统有些功能应该没法用。
功能有 :
隐藏wifi图标
隐藏移动图标
隐藏其他图标
双击状态栏锁屏
网速小于200kb/s不显示
修改时间样式
去除下拉通知中心背景
目前只有这些,有意思的功能可以和我说,我也觉得有意思的话会实现一下哦?
由于自用,就没有怎么写ui,使用起来也很简单。
下方文本是可以编辑的,只需要把"?"改为"☹️"或者反过来就行。代表应用,也就是true
,代表不应用,也就是false
。其中 is_change_time_style
比较特殊,它有三个附加属性,bold(加粗)
, null(时间转换为时辰)
, cpu(显示cpu温度)
,中间用&
链接。比如我图中状态栏的效果,你可以修改成is_change_time_style = ?&bold&cpu
。部分内容需要root,不要忘了手动授予
使用愉快?
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:17
Xposed 插件
支持Android9~13
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:18
本软件在微信(WeChat)中实现了类似于 QQ 中群消息助手的功能,可以将所有群聊和服务号从主界面收入至单独的二级界面进行统一管理,使得主界面更加清爽高效,同时也使得群消息管理起来更加方便快捷。
本仓库为Lsposed发行仓库,开源项目请移步->WechatChatRoomHelper
项目主页及更多信息: - 项目地址 - 反馈地址(拉到最底下)
公众号(服务号)可以收入至二级界面进行管理。
群聊和公众号可以设置白名单,使其不在二级界面出现。
本软件需要在 Root 后的手机中安装 Xposed 框架后方能使用。
关于 Xposed ,可以在这个链接了解并下载安装。
本软件在初次使用和微信版本发生变更时需要重新获取配置,请在程序中查看。
请查看release的具体日志。 具体情况请在程序中获取配置时查看。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:15
利用 Xposed 实现微信以前的 //multiwebview
功能,在最近任务列表中可以同时显示微信聊天窗口和网页窗口,并可以互相切换,避免回消息的时候丢失网页窗口。
实现很简单:hook startActivity
,向 intent
添加 FLAG_ACTIVITY_NEW_DOCUMENT
和 FLAG_ACTIVITY_MULTIPLE_TASK
两个 Flag 即可,其中前者使得 activity
在新任务中开启,后者使得开启多个 activity
时每个 activity
都在新的任务中开启,这样可以同时打开多个网页,分别在多个窗口中显示。
感谢原作者,原作者未适配 8.x 版本微信,这里做了更新,并提交到了LSPosed Repo ,由于换了签名,所以也换了包名。
目前支持阅读公众号文章和小程序页面。如有问题或者需要适配新版本,欢迎提 Issue or PR
新版微信更改了公众号文章页面的 Activity
的类名。目前在 Google Play 版微信 7.0.3 和 7.0.10 版本测试通过。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:14
# FunDex2
基于Xposed现实的Dex脱壳机:
支持5-13系统
使用方式:
1、在模块页面选择需要脱壳对应的Apk。
2、Lsposed激活插件。
3、启动目标Apk即可。
脱掉的Dex文件保存在/data/data/包名/目录下。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:16
# FunELF
基于Xposed现实的SO文件脱壳机:
通过hook linker的方式在So加载完毕的时候对So文件进行dump和修复。
支持无ELF头的soinfo dump修复 。核心修复使用的sofix。
(https://github.com/F8LEFT/SoFixer)
支持5-13系统。
使用方式:
1、Lsposed激活插件
2、在模块页面选择需要脱壳对应的Apk。
3、启动目标Apk即可。
修复的So文件保存在/data/data/包名/FunELF/目录下。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:31
主要两个功能 。
il2cpp的源码dump和方法调用跟踪 。
在不勾选il2cppTrace的时候默认使用Dump功能 。
Dump主要参考自:(尊重原创)
https://github.com/Perfare/Zygisk-Il2CppDumper
主要使用Xposed去实现Dump,而非Magisk模块注入的方式去dump 。
Hook了 Linker在libil2cpp.so加载到内存里以后立刻进行dump和解密 ,防止被加固 。
dump文件保存在/data/data/包名/Funil2cpp_dump_时间.cs
主要是遍历所有Il2cpp方法地址,获取对应的方法名和类名 ,通过方法插装的方式在符合关键字的地址进行插装 (支持短指令方法),
监听某个地址或者il2cpp的方法调用 ,而非通过inlinehook的方式 。
插装方法来自Dobby 。
https://github.com/jmpews/Dobby
可以根据关键字进行过滤。方法调用文件保存在/data/data/包名/下 。
因为调用方法过多, 所以我们经常只需要对游戏的某个动作的方法调用进行触发即可 。
比如我希望获取人物换装备的方法调用栈,在模块勾选il2cppTrace,输入需要过滤的关键字 :
1,先删除本地/data/data/包名下以保存的trace方法文件 。将之前没用的方法调用删除,防止干扰。
2,转换到游戏更换装备。
3 , 退出游戏,防止其他调用干扰。
这么一来,保存在/data/data/包名下的即为更换装备调用栈 。
当然过滤关键字也可以传入ALL 。
可以针对全部方法的监听,但是这种及其不稳定 。因为一个游戏基本都是几万个或者几十万个方法。可能会存在崩溃等情况 ,
所以监听全部调用的不建议使用 。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:34
# FunJni
在分析Apk的时候难免去分析So层,大多数native层都需要IDA调试,特别是分析数量很多的Apk的时候。我之前就想着,能不能对各种Naitive层进行监听。Apk放进去就可以实现自动化分析,包括调用了哪些方法,每个Java类里面保存了哪些数据。做了什么事情。特别是分析设备指纹的时候,Apk会采集非常多的设备信息。但是这些设备信息,无从下手,不知道应该从哪里改起,加上很多Apk都有混淆,分析起来是一件很费劲的事情。我们完全可以把一些关键信息,进行快速序列化,保存起来,对里面的东西直接搜索我们需要的内容即可即可 。
现在市面上有很多Java层的自吐工具,比如Hook,Java层的常见加密信息,以实现自吐,现在很多大厂基本都不会走Java层基础加密,大多数都是自己实现的加密方式,Java层最多只能算是辅助作用。几年之前还很好用,现在看起来有点鸡肋 。那么有没有什么比较好的分析Native的工具呢?
现在市面上常见的hook基本就是Frida和Xposed占大头,Frida常见的分析工具,比如Frida 的Jnitrace,Unidbg之类的 就很好用,根据Unidbg 的实现逻辑,targetSdk版本号检测,或者检测某个字符串的Hash的返回值 。
检测Frida的方法就更多了,各种反调试都是可以检测出来,比如文件,端口号,特征都是常见的anti点。
但是针对Xposed的检测却很难,需要先拿到Classloader,和一些特征才能判断是否被注入。特别是Lsposed,在Hunter里面也只能通过检测Libart的CRC,内存文件和本地文件的指令累加,判断是否相等,以检测Libart是否被修改,但是这种方式一般大厂也不敢轻易去上,很容易SIGN11。Lsposed因为是系统层注入,加上命名空间,还有本身Lsp的Classloader被隐藏了,在应用层很难去拿到比较好的特征点。这篇文章主要是介绍一下之前几年搞的各种小工具,做了个合计 。也方便各位以后能快速对各种Apk进行分析 。这篇文章读下来也会有不少收获 。
另外代码会开源,还希望各位老板多多start !
第一版本我只做了6个功能 。
第一版本算是搭了个架子,后面有时间的话会慢慢完善 。当然也欢迎各位大佬进行push和pull ,有好的建议可以在issues提想法 。
使用的话也很简单,Xposed模块,先选择需要Hook的Apk ,内存序列化和Native层Hook只能选一个 。如果没开启内存序列化的话,会弹窗。
推荐根据自己的需求去Hook指定的So 。比如libaaa.so ,只需要输入libaaa或者libaaa.so 即可,如果需要Hook监听多个So的话可以用|分割 。
如 libaaa.so|libbbb.so 即可 。下面会分别介绍一下具体的实现过程,不然只看代码学习效率很低。下面主要是一些实现的细节 。
这个很简单,直接把So注入即可,不同版本调用的api不同 。具体代码如下 。
public static void LoadSoForPath(String path, Object object) {
try {
CLog.e("load so path -> " + path);
if (Build.VERSION.SDK_INT >= 28) {
String nativeLoad = (String) XposedHelpers.callMethod(Runtime.getRuntime(), "nativeLoad", path, object);
CLog.e(nativeLoad == null ? "" : nativeLoad);
} else {
String doLoad = (String) XposedHelpers.callMethod(Runtime.getRuntime(), "doLoad", path, object);
CLog.e(doLoad == null ? "" : doLoad);
}
CLog.i("load so for path success "+path);
} catch (Throwable e) {
CLog.e("load so for path " + e.getMessage());
}
}
第一个参数是SO路径,这块有一个细节,卡住了不少人,就是这个方法的参数2,他是一个Classloader,这Classloader 表示当前注入So的Classloader ,在Native层不同的Classloader的作用域是不一样的,跟Dex一样,每个SO也是有属于自己的Classloader,因为Xposed的Classloader和当前进程Context的Classloader是不一样的。
如果你用当前进程的Context的Classloader进行注入,他会找不到Xposed加载的类,因为Classloader不一样 ,会一直提示class not find ,导致无法在Naitive层注册一个Native方法 。解决办法也很简单,直接用XposedHook类的.class.getClassLoader()即可 。
还有就是如何自动化区分被HookApk是64位还是32位。这块代码里面都会很详细的介绍和实现逻辑 ,具体参考代码。
什么是Java内存序列化,就是讲Java层整个虚拟机的全部Java实例转换成JSON字符串,保存到本地 。这个也是我经常用的功能之一 。
他有什么作用?比如一个很简单的CASE场景,我想知道一个大厂Apk设备指纹都保存在哪些Java类里面 ?都保存了什么东西 ?
直接让软件运行30秒以后( 这个时间可以根据自己的业务场景去控制),扫描一下内存即可 。遍历的时间和Apk的大小有关系,Apk越大保存的对象越多,耗时越长 。
获取内存实例,实现原理也很简单,之前文章介绍过如何获取 https://bbs.kanxue.com/thread-269094.htm
这个Api是一个隐藏api ,目前只做了 android 9- 11支持 。9-11是系统自带Api , 其他版本需要自己实现,我尝试在 5 - 9实现发现稳定性存在问题,所以在XposedJni里面做了判断,所以这个功能只有9-11支持 。
代码如下:
private void startSerialization(Context context) {
try {
//手动触发gc,清空多余实例
System.gc();
final File file = new File("/data/data/"
+ mTagPackageName + "/" + mProcessName + "_MemorySerializationInfo.txt");
if (file.exists()) {
file.delete();
}
file.createNewFile();
//子线程和主线程共享数据
ThreadUtils.runOnNonUIThread(() -> {
ArrayList choose = ChooseUtils.choose(Object.class, true);
int size = choose.size();
CLog.e("memory object size -> " + size);
for (int index = 0; index < size; index++) {
Object obj = choose.get(index);
String objStr = GsonUtils.obj2str(obj);
if (objStr != null) {
String objClassName = obj.getClass().getName();
String infoStr = index + "/" + size + "[" + mProcessName + "]" + objClassName + " " + objStr + "\n";
//增加效率暂不打印进度
//printfProgress(size,index,context);
//ToastUtils.showToast(context,"MemorySerialization["+index+"/"+size+"]");
CLog.i(infoStr);
FileUtils.saveStringNoClose(infoStr, file);
}
}
FileUtils.saveStringClose();
}, 30 * 1000);
} catch (Throwable e) {
CLog.e("startSerialization error " + e);
}
}
在子线程开启,将内存全部的Object实例拿到手以后,对每一个Object进行JSON字符串的转换,然后将转换以后的内容保存到本地 。包括Class的类名 。内容的JSON传等信息 。当然也可以根据自己需求取来,只获取需要的类即可 。比如我想查看内存里面全部的String变量 。可以将Object.class换成String.class即可 。方便快速分析和定位 。
效果如下基本一个大一点的Apk对象数量都超过15W以上,大约10分钟左右就可以遍历完毕,和手机配置有关系 。
2023-04-01 23:44:34.749 18522-19106/? I/Zhenxi: [Zhenxi] 287/204804[进程名]android.system.StructTimespec {"tv_nsec":288510927,"tv_sec":1680363817}
2023-04-01 23:44:34.749 18522-19106/? I/Zhenxi: [Zhenxi] 288/204804[进程名]android.system.StructTimespec {"tv_nsec":288510927,"tv_sec":1680363817}
2023-04-01 23:44:34.750 18522-19106/? I/Zhenxi: [Zhenxi] 289/204804[进程名]android.system.StructTimespec {"tv_nsec":288510927,"tv_sec":1680363817}
2023-04-01 23:44:34.752 18522-19106/? I/Zhenxi: [Zhenxi] 290/204804[进程名]android.system.StructStat {"st_atim":{"tv_nsec":288510927,"tv_sec":1680363817},"st_atime":1680363817,"st_blksize":4096,"st_blocks":8,"st_ctim":{"tv_nsec":288510927,"tv_sec":1680363817},"st_ctime":1680363817,"st_dev":64522,"st_gid":10236,"st_ino":137495,"st_mode":33200,"st_mtim":{"tv_nsec":288510927,"tv_sec":1680363817},"st_mtime":1680363817,"st_nlink":1,"st_rdev":0,"st_size":148,"st_uid":10236}
2023-04-01 23:44:34.755 18522-19106/? I/Zhenxi: [Zhenxi] 291/204804[进程名]java.io.BufferedInputStream {"count":148,"marklimit":0,"markpos":-1,"pos":148}
2023-04-01 23:44:34.759 18522-19106/? I/Zhenxi: [Zhenxi] 292/204804[进程名]java.io.FileInputStream {"closeLock":{},"closed":true,"fd":{"descriptor":-1,"ownerId":0},"guard":{},"isFdOwner":true,"path":"/data/user/0/进程名/shared_prefs/RDeliveryHitSubTaskTagFile.xml","tracker":{"isOpen":true,"mode":"READ","opCount":1,"totalByteCount":16384}}
2023-04-01 23:44:34.772 18522-19106/? I/Zhenxi: [Zhenxi] 294/204804[进程名]java.lang.Object {}
2023-04-01 23:44:34.773 18522-19106/? I/Zhenxi: [Zhenxi] 295/204804[进程名]dalvik.system.CloseGuard {}
2023-04-01 23:44:34.774 18522-19106/? I/Zhenxi: [Zhenxi] 296/204804[进程名]libcore.io.IoTracker {"isOpen":true,"mode":"READ","opCount":1,"totalByteCount":16384}
2023-04-01 23:44:34.775 18522-19106/? I/Zhenxi: [Zhenxi] 297/204804[进程名]java.io.FileDescriptor {"descriptor":-1,"ownerId":0}
2023-04-01 23:44:34.776 18522-19106/? I/Zhenxi: [Zhenxi] 298/204804[进程名]android.system.StructTimespec {"tv_nsec":288510927,"tv_sec":1680363817}
2023-04-01 23:44:34.777 18522-19106/? I/Zhenxi: [Zhenxi] 299/204804[进程名]android.system.StructTimespec {"tv_nsec":288510927,"tv_sec":1680363817}
2023-04-01 23:44:34.778 18522-19106/? I/Zhenxi: [Zhenxi] 300/204804[进程名]android.system.StructTimespec {"tv_nsec":288510927,"tv_sec":1680363817}
2023-04-01 23:44:34.779 18522-19106/? I/Zhenxi: [Zhenxi] 301/204804[进程名]android.system.StructStat {"st_atim":{"tv_nsec":288510927,"tv_sec":1680363817},"st_atime":1680363817,"st_blksize":4096,"st_blocks":8,"st_ctim":{"tv_nsec":288510927,"tv_sec":1680363817},"st_ctime":1680363817,"st_dev":64522,"st_gid":10236,"st_ino":137495,"st_mode":33200,"st_mtim":{"tv_nsec":288510927,"tv_sec":1680363817},"st_mtime":1680363817,"st_nlink":1,"st_rdev":0,"st_size":148,"st_uid":10236}
... ...
这个是我之前写的一个小工具,地址如下。
https://github.com/w296488320/JnitraceForCpp
代码直接粘过来的 。今天有时间顺便改了改一些之前错误和多余的逻辑 。
主要监听的函数列表如下 。
HOOK_JNITRACE(env, CallObjectMethodV)
HOOK_JNITRACE(env, CallBooleanMethodV)
HOOK_JNITRACE(env, CallByteMethodV)
HOOK_JNITRACE(env, CallCharMethodV)
HOOK_JNITRACE(env, CallShortMethodV)
HOOK_JNITRACE(env, CallIntMethodV)
HOOK_JNITRACE(env, CallLongMethodV)
HOOK_JNITRACE(env, CallFloatMethodV)
HOOK_JNITRACE(env, CallDoubleMethodV)
HOOK_JNITRACE(env, CallVoidMethodV)
HOOK_JNITRACE(env, CallStaticObjectMethodV)
HOOK_JNITRACE(env, CallStaticBooleanMethodV)
HOOK_JNITRACE(env, CallStaticByteMethodV)
HOOK_JNITRACE(env, CallStaticCharMethodV)
HOOK_JNITRACE(env, CallStaticShortMethodV)
HOOK_JNITRACE(env, CallStaticIntMethodV)
HOOK_JNITRACE(env, CallStaticLongMethodV)
HOOK_JNITRACE(env, CallStaticFloatMethodV)
HOOK_JNITRACE(env, CallStaticDoubleMethodV)
HOOK_JNITRACE(env, CallStaticVoidMethodV)
HOOK_JNITRACE(env, GetObjectField)
HOOK_JNITRACE(env, GetBooleanField)
HOOK_JNITRACE(env, GetByteField)
HOOK_JNITRACE(env, GetCharField)
HOOK_JNITRACE(env, GetShortField)
HOOK_JNITRACE(env, GetIntField)
HOOK_JNITRACE(env, GetLongField)
HOOK_JNITRACE(env, GetFloatField)
HOOK_JNITRACE(env, GetDoubleField)
HOOK_JNITRACE(env, GetStaticObjectField)
HOOK_JNITRACE(env, GetStaticBooleanField)
HOOK_JNITRACE(env, GetStaticByteField)
HOOK_JNITRACE(env, GetStaticCharField)
HOOK_JNITRACE(env, GetStaticShortField)
HOOK_JNITRACE(env, GetStaticIntField)
HOOK_JNITRACE(env, GetStaticLongField)
HOOK_JNITRACE(env, GetStaticFloatField)
HOOK_JNITRACE(env, GetStaticDoubleField)
HOOK_JNITRACE(env, NewStringUTF)
HOOK_JNITRACE(env, GetStringUTFChars)
HOOK_JNITRACE(env, FindClass)
HOOK_JNITRACE(env, ToReflectedMethod)
HOOK_JNITRACE(env, FromReflectedMethod)
HOOK_JNITRACE(env, GetFieldID)
HOOK_JNITRACE(env, GetStaticFieldID)
HOOK_JNITRACE(env, NewObjectV)
都是一些常见的JNI交互函数,Hook以后在调用之前和调用之后将jobject 进行toString打印即可。这块需要注意的是打印可变参数和栈溢出问题,
因为我们也需要调用JNI函数,需要判断哪些SO监听,哪些不需要监听 ,剩下的就是代码细节实现了 。因为打印日志量比较多,所以需要将Log一些信息保存到本地文件里面 。代码实现也很简单,封装了大量的宏,减少工作量 。
//jobject CallObjectMethod(JNIEnv*, jobject, jmethodID, va_list args);
JNI_HOOK_DEF(jobject, CallObjectMethodV, JNIEnv *env, jobject obj, jmethodID jmethodId,
va_list args)
DL_INFO
IS_MATCH
GET_JOBJECT_INFO(env, obj, "CallObjectMethodV")
GET_METHOD_INFO_ARGS(env, obj, jmethodId, args, false)
jobject ret = orig_CallObjectMethodV(env, obj, jmethodId, args);
getJObjectInfoInternal(env, ret, "result object :", true, nullptr);
return ret;
}
}
return orig_CallObjectMethodV(env, obj, jmethodId, args);
}
//void CallVoidMethod(jobject obj, jmethodID methodID, va_list args)
JNI_HOOK_DEF(void, CallVoidMethodV, JNIEnv *env, jobject obj, jmethodID jmethodId,
va_list args)
DL_INFO
IS_MATCH
GET_JOBJECT_INFO(env, obj, "CallVoidMethodV")
GET_METHOD_INFO_ARGS(env, obj, jmethodId, args, false)
}
}
return orig_CallVoidMethodV(env, obj, jmethodId, args);
}
...
打印效果截取如下 :
2023-04-01 23:47:27.494 21432-21709/? I/Zhenxi: [文件名] GetStringUTFChars : vb_platformInfo_channel_id
2023-04-01 23:47:27.494 21432-21457/? I/Zhenxi: [文件名] args 0 1 1
2023-04-01 23:47:27.495 21432-21432/? I/Zhenxi: [文件名] GetStringUTFChars : android.hardware.Sensor
2023-04-01 23:47:27.495 21432-21709/? I/Zhenxi: [文件名] GetStringUTFChars : key_guid
2023-04-01 23:47:27.495 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : VBIPExchanger_InnerInitTask
2023-04-01 23:47:27.495 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : isMainProc proc:包名:cache packageName:包名
2023-04-01 23:47:27.495 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : VBPBService-6447
2023-04-01 23:47:27.495 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : NXNetwork_Transport_HttpImpl
2023-04-01 23:47:27.495 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : [GetCarrierIPRequest]-1 connectStart():/60.28.219.101:443
2023-04-01 23:47:27.495 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : VBPBService-6447
2023-04-01 23:47:27.496 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : QAD
2023-04-01 23:47:27.496 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : setQAdMediaPlayerCreator() QAD_TVKPlayer注册成功
2023-04-01 23:47:27.496 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : TVK-HighPriorityThread1
2023-04-01 23:47:27.496 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : VBNetStateService_VBNetTypeHelper
2023-04-01 23:47:27.496 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : getNetworkInfo network capability validated:true
2023-04-01 23:47:27.496 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : VBPBService-6447
2023-04-01 23:47:27.496 21432-21709/? I/Zhenxi: [文件名] GetStringUTFChars : creator_account_info_key
2023-04-01 23:47:27.497 21432-21709/? I/Zhenxi: [文件名] GetStringUTFChars : vb_platformInfo_channel_id
2023-04-01 23:47:27.497 21432-21709/? I/Zhenxi: [文件名] GetStringUTFChars : key_guid
2023-04-01 23:47:27.498 21432-21709/? I/Zhenxi: [文件名] GetStringUTFChars : creator_account_info_key
2023-04-01 23:47:27.498 21432-21709/? I/Zhenxi: [文件名] GetStringUTFChars : vb_platformInfo_channel_id
2023-04-01 23:47:27.500 21432-21709/? I/Zhenxi: [文件名] GetStringUTFChars : key_guid
2023-04-01 23:47:27.502 21432-21486/? I/Zhenxi: [文件名] GetStringUTFChars : public_io_pool-6479
2023-04-01 23:47:27.503 21432-21796/? I/Zhenxi: [文件名] args 3 17 17
2023-04-01 23:47:27.503 21432-21796/? I/Zhenxi: [文件名] invoke method result Boolean : true
2023-04-01 23:47:27.504 21432-21432/? I/Zhenxi: <<<<<------------------CallBooleanMethodV start--------------------->>>>>
2023-04-01 23:47:27.506 21432-21432/? I/Zhenxi: [文件名] invoke this object android.hardware.Sensor {Sensor name="linear_acceleration", vendor="qualcomm", version=1, type=0, maxRange=156.98999, resolution=0.01, power=0.515, minDelay=5000}
2023-04-01 23:47:27.507 21432-21432/? I/Zhenxi: [文件名] invoke method private boolean android.hardware.Sensor.setType(int)
2023-04-01 23:47:27.508 21432-21432/? I/Zhenxi: [文件名] args 0 10 10
2023-04-01 23:47:27.508 21432-21432/? I/Zhenxi: [文件名] invoke method result Boolean : true
2023-04-01 23:47:27.509 21543-21672/? I/Zhenxi: [文件名] GetStringUTFChars : VBNetStateService_VBNetTypeHelper
2023-04-01 23:47:27.509 21432-21459/? I/Zhenxi: [文件名] invoke this object android.view.ViewRootImpl$W android.view.ViewRootImpl$W@43c430d
...
主要处理函数如下
void stringHandler::init() {
void *handle = dlopen("libc.so", RTLD_NOW);
if (handle == nullptr) {
LOG(ERROR) << "strhadler get handle == null ";
return;
}
HOOK_SYMBOL_DOBBY(handle, strstr)
HOOK_SYMBOL_DOBBY(handle, strcmp)
HOOK_SYMBOL_DOBBY(handle, strcpy)
HOOK_SYMBOL_DOBBY(handle, strdup)
HOOK_SYMBOL_DOBBY(handle, strxfrm)
HOOK_SYMBOL_DOBBY(handle, strtok)
// HOOK_SYMBOL_DOBBY(handle, memcpy)
// HOOK_SYMBOL_DOBBY(handle, read)
// HOOK_SYMBOL_DOBBY(handle, write)
// HOOK_SYMBOL_DOBBY(handle, sprintf);
// HOOK_SYMBOL_DOBBY(handle, printf);
// HOOK_SYMBOL_DOBBY(handle, snprintf);
// HOOK_SYMBOL_DOBBY(handle, vsnprintf);
其他大部分底层都是这几个函数,也是将不同函数的参数进行hook和拦截 。在处理之前和处理之后进行打印 。一般不注重安全的程序员,都会用系统的函数进行比较和替换,而非自己去实现,比如比较当前进程是否正在被调试,我们只需要打印比较传入的参数的内容 。找到以后直接打印调用栈和函数地址 。
可以很快速的定位反调试的位置 。还有其他地方, 也可以通过这些函数也可以获取到很多有用的信息 。
这块我想处理一下C++ STD里面的string ,因为string 会被inline ,所以只能去宿主so里面去hook 。就一直没来得及时间去处理后面有时间补上 。
打印效果如下:
2023-04-01 23:51:02.119 22893-22970/? I/Zhenxi: [文件名]strcmp() arg1 -> /storage/emulated/0/DCIM/.tmfs/.turing.dat arg2-> /storage/emulated/0/.turing.dat
2023-04-01 23:51:02.119 22893-22970/? I/Zhenxi: [文件名]strcmp() arg1 -> /storage/emulated/0/DCIM/.tmfs/.turing.dat arg2-> /storage/emulated/0/DCIM/.tmfs/.turing.dat
2023-04-01 23:51:02.119 22893-22970/? I/Zhenxi: [文件名]strcmp() arg1 -> /storage/emulated/0/.turing.dat arg2-> /storage/emulated/0/.turing.dat
2023-04-01 23:51:02.120 22893-22970/? I/Zhenxi: [文件名]strcmp() arg1 -> /data/user/0/com.xxxxxx.vvvv/app_turingdfp/1/.turing.dat arg2-> /storage/emulated/0/.turing.dat
2023-04-01 23:51:02.120 22893-22970/? I/Zhenxi: [文件名]strcmp() arg1 -> /data/user/0/com.xxxxxx.vvvv/app_turingdfp/1/.turing.dat arg2-> /storage/emulated/0/DCIM/.tmfs/.turing.dat
2023-04-01 23:51:02.136 23013-23041/? I/Zhenxi: [文件名]strcpy() arg1 -> android.os.Handler$MessengerImpl arg2-> android.os.Handler$MessengerImplresult -> android.os.Handler$MessengerImpl
2023-04-01 23:51:02.136 23013-23041/? I/Zhenxi: [文件名]strcmp() arg1 -> org.chromium.android_webview.AwContents arg2-> android.os.Handler$MessengerImpl
2023-04-01 23:51:02.136 23013-23041/? I/Zhenxi: [文件名]strcmp() arg1 -> android.app.ActivityThread$ApplicationThread arg2-> android.os.Handler$MessengerImpl
2023-04-01 23:51:02.136 23013-23041/? I/Zhenxi: [文件名]strcpy() arg1 -> android.os.IMessenger$Stub arg2-> android.os.IMessenger$Stubresult -> android.os.IMessenger$Stub
2023-04-01 23:51:02.137 23013-23041/? I/Zhenxi: [文件名]strcmp() arg1 -> org.chromium.android_webview.AwContents arg2-> android.os.IMessenger$Stub
2023-04-01 23:51:02.137 23013-23041/? I/Zhenxi: [文件名]strcmp() arg1 -> android.app.ActivityThread$ApplicationThread arg2-> android.os.IMessenger$Stub
2023-04-01 23:51:02.137 23013-23041/? I/Zhenxi: [文件名]strcpy() arg1 -> android.os.Binder arg2-> android.os.Binderresult -> android.os.Binder
2023-04-01 23:51:02.137 23013-23041/? I/Zhenxi: [文件名]strcmp() arg1 -> org.chromium.android_webview.AwContents arg2-> android.os.Binder
2023-04-01 23:51:02.138 23013-23041/? I/Zhenxi: [文件名]strcmp() arg1 -> android.app.ActivityThread$ApplicationThread arg2-> android.os.Binder
....
这个实现也很简单,直接hook artmethod里面的RegisterNative ,然后调用prettyMethod函数指针打印artmethod信息 。
我这块在在回调里面打印了,方法基础签名信息 ,绝对地址,相对地址,所属efl文件 。这个方法里面没做判断,会打印注册全部的信息 。
HOOK_DEF(void*, RegisterNative, void *thiz, void *native_method) {
string basicString = invokePrintf_org_PrettyMethodSym(thiz, true);
if (isSave) {
*invokeOs << basicString.append("\n");
}
Dl_info info;
dladdr(native_method, &info);
size_t relative_offset =
reinterpret_cast(native_method) - reinterpret_cast(info.dli_fbase);
LOG(INFO) <<"REGISTER_NATIVE " << basicString.c_str() << " absolute address(内存地址) -> "
<< native_method << " relative offset(相对地址) "<<(void*)relative_offset
<<"所属ELF文件 ["< 0x77787377fc relative offset(相对地址) 0x3357fc所属ELF文件 [mmmm.so]
2023-04-01 23:53:12.617 24017-24247/? I/Zhenxi: REGISTER_NATIVE long com.xxxxxx.bbbb.core.downloadproxy.jni.TPDownloadProxyNative.verifyOfflineCacheSync(java.lang.String, int, java.lang.String, java.lang.String)
absolute address(内存地址) -> 0x7778737908 relative offset(相对地址) 0x335908所属ELF文件 [mmmm.so]
2023-04-01 23:53:12.617 24017-24247/? I/Zhenxi: REGISTER_NATIVE void com.xxxxxx.bbbb.core.downloadproxy.jni.TPDownloadProxyNative.setPlayerState(int, int)
absolute address(内存地址) -> 0x7778737a68 relative offset(相对地址) 0x335a68所属ELF文件 [mmmm.so]
2023-04-01 23:53:12.617 24017-24247/? I/Zhenxi: REGISTER_NATIVE void com.xxxxxx.bbbb.core.downloadproxy.jni.TPDownloadProxyNative.updateTaskInfo(int, java.lang.String, java.lang.String)
absolute address(内存地址) -> 0x7778737a74 relative offset(相对地址) 0x335a74所属ELF文件 [mmmm.so]
2023-04-01 23:53:12.617 24017-24247/? I/Zhenxi: REGISTER_NATIVE void com.xxxxxx.bbbb.core.downloadproxy.jni.TPDownloadProxyNative.updatePlayerPlayMsg(int, int, int, int)
absolute address(内存地址) -> 0x7778737b78 relative offset(相对地址) 0x335b78所属ELF文件 [mmmm.so]
2023-04-01 23:53:12.617 24017-24247/? I/Zhenxi: REGISTER_NATIVE boolean com.xxxxxx.bbbb.core.downloadproxy.jni.TPDownloadProxyNative.isNativeReadyForWork()
absolute address(内存地址) -> 0x7778737b8c relative offset(相对地址) 0x335b8c所属ELF文件 [mmmm.so]
...
这个方法里面主要是Hook了 linker 底层open的方法,在Linker刚刚将内存加载到内存里还没有进行初始化的时候,得到一个回调。
也是详细打印了各种信息 ,比如SO开始地址,结束地址,ELF的长度。可以在这块进行SO的dump和保存,这个时机点还有一个作用就是做监听和资源文件。
举个栗子,在对游戏源码进行脱壳和修复的时候,比如LUA文件的dump修复,是需要先Hook buffloader函数的 ,也就是在这这个时机点进行Hook 。So刚刚加载到内存里面,还没有进行源码的加载,即刻进行Hook ,这么一来他加载的文件都会被拦截。实际太早或者太晚,都可能导致dump的不全 。
这块也是暴露出来一个时机点,方便Hook 。
void onSoLoadedAfter(const char *filename,void *ret){
auto mapInfo = getSoBaseAddress(filename);
char buffer[PATH_MAX];
sprintf(buffer, "linker load %s start-> 0x%zx end-> 0x%zx size -> %lu",
filename, mapInfo.start, mapInfo.end, (mapInfo.end - mapInfo.start));
if (isSave) {
if (hookStrHandlerOs != nullptr) {
(*hookStrHandlerOs) << buffer;
}
}
LOGI("%s ", buffer);
}
打印效果如下:
2023-04-01 23:53:12.023 24017-24429/? I/Zhenxi: linker load /data/app/~~KJajvMQT0WLC5kpaiv75pA==/baoming-ZPiDMFjwVCA12Ot9z_btog==/lib/arm64/yyyy.so start-> 0x77a275b000 end-> 0x77a27ad000 size -> 335872
2023-04-01 23:53:12.140 24017-24247/? I/Zhenxi: linker load /data/app/~~KJajvMQT0WLC5kpaiv75pA==/baoming-ZPiDMFjwVCA12Ot9z_btog==/lib/arm64/kkkk.so start-> 0x778f68b000 end-> 0x779054c000 size -> 15470592
2023-04-01 23:53:12.172 24017-24424/? I/Zhenxi: linker load libnetd_client.so start-> 0x78ff86c000 end-> 0x78ff875000 size -> 36864
2023-04-01 23:53:12.362 24017-24429/? I/Zhenxi: linker load /data/app/~~KJajvMQT0WLC5kpaiv75pA==/baoming-ZPiDMFjwVCA12Ot9z_btog==/lib/arm64/libckeygeneratorV2.so start-> 0x7783a48000 end-> 0x7783aeb000 size -> 667648
2023-04-01 23:53:12.410 24017-24429/? I/Zhenxi: linker load /data/app/~~KJajvMQT0WLC5kpaiv75pA==/baoming-ZPiDMFjwVCA12Ot9z_btog==/lib/arm64/libxps_ws.so start-> 0x778159a000 end-> 0x77816ef000 size -> 1396736
2023-04-01 23:53:12.611 24017-24247/? I/Zhenxi: linker load /data/app/~~KJajvMQT0WLC5kpaiv75pA==/baoming-ZPiDMFjwVCA12Ot9z_btog==/lib/arm64/libDownloadProxy.so start-> 0x7778402000 end-> 0x7778d73000 size -> 9900032
2023-04-01 23:53:12.700 24017-24247/? I/Zhenxi: linker load libc.so start-> 0x7900557000 end-> 0x7900653000 size -> 1032192
2023-04-01 23:53:12.729 23903-23903/? I/Zhenxi: linker load /data/app/~~KJajvMQT0WLC5kpaiv75pA==/baoming-ZPiDMFjwVCA12Ot9z_btog==/lib/arm64/kkkk.so start-> 0x772d186000 end-> 0x772e047000 size -> 15470592
...
主要是Hook了artmethod的invoke方法,一切的java方法底层都会走这个方法,包括脱壳也是修改的这个方法获取被抽取的指令,然后对Dex进行重构 。
我想尝试在这个方法里面对参数进行打印,但是失败了,在源码里面很好修改,但是通过Hook的话很多函数拿不到 ,加上一些核心的方法被编译器inline了,很不好操作和处理,就没继续关注了 。如果你有想法和思路可以提issues 或者提交代码 。这个方法不建议开启,个人用的很少,主要打印量太大了,一秒几千条日志 。他会打印系统的一些Java方法 ,所以很卡顿 ,不过如果你想做监听和记录 ,分析一些隐藏Api很有用 。callback实现如下 。
HOOK_DEF(void*, invoke, void *thiz, void *self, uint32_t *args, uint32_t args_size, void *result,
const char *shorty) {
string basicString = invokePrintf_org_PrettyMethodSym(thiz, true);
LOG(INFO) << "invoke method info -> " << basicString;
if (isSave) {
*invokeOs << basicString.append("\n");
}
return orig_invoke(thiz, self, args, args_size, result, shorty);
}
这个是一个我自己封装的一个native库,里面有很多常用的方法,都进行了封装 ,删除了一些改机和没用的模块,留了一些常用的模块 。
主要是下面几个比较常用的 ,也方便后续开发和维护 。
比如常见的hook操作 。如何inlinehook少于四个字节的方法,如何插装hook和如何异常hook 。这些都不需要关注,导入头文件以后直接 。
HookUtils::Hooker(xxx,(void *) xxx,(void **) &new_xxx);
一键hook即可 。底层封装分三步实现,先dobby hook ,失败了则使用异常hook, 最后dobby插装 。代码如下
bool HookUtils::Hooker(void *dysym, void *newrep, void **org) {
if (dysym == nullptr) {
LOG(ERROR) << "dobby hook org == null ";
return false;
}
if (hookedList == nullptr) {
hookedList = new list();
}
//如果这个地址已经被Hook了 。也有可能返回失败 。dobby 会提示 already been hooked 。
for (void *ptr: *hookedList) {
if (ptr == dysym) {
//如果保存了这个地址,说明之前hook成功过,我们也认为hook成功
return true;
}
}
bool ret = DobbyHook(dysym,
reinterpret_cast(newrep),
reinterpret_cast(org)) == RT_SUCCESS;
if (ret) {
//LOG(ERROR) << "hook utils hook success !" ;
//将地址添加到已经hook的列表,防止这个地址被多次hook
hookedList->push_back(dysym);
return true;
}
//如果dobby hook失败了,采用sandhook异常hook进行补救,
LOG(ERROR) << "zhenxi runtime inlinehook start sandhook InlineHookImpl ";
ret = SandHook::Inline::InlineHookImpl(dysym, newrep, org);
if (ret) {
hookedList->push_back(dysym);
return true;
}
LOG(ERROR)
<< ">>>>>>>>>>>>>>> sandhook inlinehook hook error,start dobby branch_trampoline hook ";
//如果sandhook sign hook 也失败了,我们采用dobby附近插装去hook
dobby_enable_near_branch_trampoline();
//二次hook
ret = DobbyHook(dysym,
reinterpret_cast(newrep),
reinterpret_cast(org)) == RT_SUCCESS;
//关闭附近插装
dobby_disable_near_branch_trampoline();
if (!ret) {
LOG(ERROR) << "!!!!!!!!!!!!!!! HookUtils hook error ";
return false;
}
hookedList->push_back(dysym);
return ret;
}
其他的不一一概述了,感兴趣的可以去看代码 。项目主要采用C++ 20编译的,需要NDK 23以上版本支持 。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:21
自定义MIUI NFC卡片的卡面 可使用本地文件或http URL。支持官方MIUI未知-Hyper OS最新版(仅小米智能卡版本未知-24.07.23.1.f,更新版本不代表不支持但可能失效。其它小米系统使用相同的小米智能卡理论也支持)。
修改前后对比:
软件界面:
本项目采用GPL-3.0进行开源。
欢迎star和PR,有问题可提issue。
作者不常看GitHub,有任何问题建议等可进qq群联系群主
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:14
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:21
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:21
An Xposed module that allows to skip and play/pause track with volume keys. Inspired by Gravity Box.
Works when the screen is off.
Open an issue if you are experiencing some troubles on your device
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:21
WooBox For MIUI
English 丨 简体中文
一个基于 MIUI13+(Android12+)适配的系统拓展Xposed模块
开发者:酷安@乌堆小透明
Xposed仓库下载:点击此处下载最新发行版
酷安下载:点击此处下载最新发行版
qqlittleice/MiuiHome
yujincheng08/BiliRoaming
Mikanoshi/CustoMIUIzer
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:21
通过Hook米画师的密码输入接口并在指纹识别正确后填入密码来实现指纹识别
https://github.com/ghhccghk/mhspay
去这里的Issue 交流
该模块仅在Xposed module repo官方仓库发布
严禁在公开区域宣传与展示本软件!
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:21
简体中文 | English
在任意Android 9–15设备上触发圈定即搜(Circle to Search)功能
本应用只负责触发圈定即搜,无法处理触发成功后可能出现的问题
安装最新版Google应用,开启自启动,关闭后台限制,将默认助理应用设置为Google
安装并打开MiCTS
设置触发方式
需要在LSPosed里激活模块
CSService:支持Android 15及以上,圈定即搜专用的服务,效果同CSHelper
长按小白条触发:仅支持小米设备,依赖作用域选择系统桌面
长按Home键触发:仅支持小米设备,依赖作用域选择系统框架
Google机型伪装:依赖作用域选择Google
大概率是没有将Google设为默认助理,检查一下
Google不是最新版,更新一下
原因应该是墓碑机制导致的,看看手机有没有相关的设置可以把Google加到白名单里,比如电池优化选择无限制等,在模块设置里系统触发服务
使用CSHelper
应该没有这个问题
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:21
English | 中文
This is a Motion Emulator plug-in based on Content Provider.
Motion Emulator is an Xposed-enabled location simulator with support of continuous location and sensor fake.
This module enables its Xposed functionalities over a Content Provider based transmitting protocol.
warning Usually avoid using the Content Provider plugin. It works only with host apps targeting sdk version 30 or lower. Because of the middle bridge, power consumption is higher. Moreover, future updates coming to Motion Emulator may not be implemented for this plug-in.
When in use, you should select only the app to be tricked. DO NOT enable for System Framework, which is untested and highly unstable.
To use this plug-in, Motion Emulator is to be installed, which provides emulation data using WebSocket and ProtoBuf for the host app.
You can download it from my site or GitHub.
It is also possible to find it in the LSPosed repository.
After installation, activate it in Motion Emulator. You can find a more detailed guide from here.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
Xposed module for Android Auto app to make the interface restrictions configurable
Because Android Auto is integrated into certain vehicles, Google either felt the need to, or regulations required that they build in some driver distraction protections into Android Auto. Unfortunately, some of these restrictions just add to driver frustration, and prompt one to disconnect the phone from AA and fiddle with it directly. This too is a distraction, and one that I believe outweighs the inability to scroll lists while in motion.
This module should bypass most of these restrictions. In its current state, there is a cosmetic issue on some built-in AA units where the warning speed bump still shows, but the underlying list is still scrollable. Still working on trying to make this speed bump disappear.
As a reminder, I'm not responsible for anything that happens as a result of using this module. If you're not capable of doing more than one task at a time while driving, I HIGHLY suggest you not install this module.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
An Xposed module to heal your Telegram addiction.
Completely removes "Archived Chats" button and pull-down gesture from your dialogs list. All chats are still available via search.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
Bypass Root Check Pro Xposed Module with Java and Native (C/C++) Hooks based on Modern Xposed API by LSPosed. This module bypasses root checks the pro way. This module not only hooks Java logic, but also hooks Native / System calls logic (logic written in C/C++/ Native Java code).
Screenshots have been provided at the end of this doc as a proof. Please have a look.
Install this Xposed module in LSposed and activate the module. While activating the module, please select the desired app which perform root access check & you want to bypass.
To test our module, we can install RootBeer Fresh sample application.
The below Native System calls have been hooked to avoid root detection
1. fopen()
2. stat()
3. lstat()
For more details & updated logic, refer to the C/C++ hooks code present in the repo.
The below Java classes methods have been hooked to avoid root detection
1. java.io.File.exists()
2. android.app.ApplicationPackageManager.getPackageInfo()
3. Runtime.exec()
For more details & updated logic, refer to the Kotlin/Java hooks code present in the repo.
Made with ❤️ by @gauravssnl
Pull Requests & contributions are welcome. If you like my work, give this repo a star and share.
Before Module Activation
After Module Activation
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
A Xposed module prevent some apps detect your phone connected to VPN.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
让fcm/gcm唤醒未启动的应用进行发送通知
fcm是在Android中由google维护的一条介于google服务器与gms应用之间用于推送通知的长链接。
一般的工作流程为应用服务器将消息发送到google服务器,google服务器将消息推送给gms应用,gms应用通过广播传递给应用,应用通过接收到的fcm消息决定是否发送通知和通知内容。
其中gms通过fcm广播通知应用时,如果应用处于非运行状态,就会出现Failed to broadcast to stopped app
,fcmfix主要就是解决这个问题。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
在miui for pad 14测试通过,可以在桌面打开小窗和在工作台模式下无限制打开窗口。
miui手机理论上也支持。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
OnePlus For ColorOS Kill RedOne
旨在干掉一加ColorOS的红一
系统界面->状态栏时钟,锁屏时钟
时钟->桌面时钟组件
YukiHookAPI
开发者:luckyzyx
GitHub仓库
LSPosed仓库
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
通过hook系统闹钟的AlarmAlertFullScreenActivity,在这个Activity启动时,根据你设置的闹钟配置来执行特定的Shell脚本。
可靠性是开发此模块的缘由,试过很多定时任务的APP,可能因各种原因(如后台被杀)导致到点没有执行我下的任务。
我想到系统里的闹钟,它可从来没有失误过,即使你把它的后台杀了,关机也能自动开机来提醒你。再想到LSPosed可以给APP添砖加瓦,所以就有了此模块,原理见上。
应该仅支持MIUI,其他操作系统开可以试一试,要我适配你的系统可以发issues
将Shell脚本放入/data/user/0/com.android.deskclock/files/shell/
目录,如果没有shell
文件夹,请自行创建一个。
如果你想添加一个名为helloworld的Shell脚本,那么你应该放到这里:/data/user/0/com.android.deskclock/files/shell/helloworld.sh
新建一个脚本文件,假设你要创建的是"helloworld.sh",创建完成后,再去新建一个备注与脚本文件名一样的闹钟,闹钟备注名就应该是"helloworld.sh"。闹钟应该铃声为无铃声且取消掉震动(如果你乐意也无所谓)。
脚本文件一律使用ROOT执行!所以必须先授予闹钟ROOT权限!
由于root的申请在闹钟响铃时执行,所以你第一次创建一个脚本后,把闹钟的时间设置在最近的几分钟后,响铃时会申请root权限,允许后就得到了root权限,后续新建其他脚本都无需授权(只要你不关闭或撤销magisk里的root授权即可),root权限申请成功后,就可以将闹钟的时间改为为你想要的时间,到点后即可正常执行你的脚本。
执行脚本前,闹钟响铃的activity界面不会自动关闭,所以你应该添加一个滑动屏幕的命令,将闹铃关闭。当然我相信脚本你都会放在晚上你睡觉的时候让它执行,所以执行完关闭闹钟后,你应该再写一个解锁屏幕的命令,然后再去执行接下来的操作。
示例
sleep 3
#关闭闹钟
input swipe 500 1500 500 500
#解锁屏幕,视密码而定,下面的演示为没有密码的
sleep 3
input swipe 500 1500 500 500
sleep 1
#接下来要执行的操作
只要你的闹钟备注没有对应的脚本文件,那么闹钟不会执行任何脚本,不影响正常使用。除非你故意在shell目录里放了个叫"起床"的脚本。
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
禁用 MIUI 划卡即强杀应用行为,又名你杀我 VPN 干啥
在 MIUI 14 以及基于 Android 14 的 HyperOS 上测试通过。
如果在其他版本上正常工作,欢迎前往源码仓库回报。
在最近任务中上锁 | 或后台策略设置为无限制 |
---|---|
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:20
Really simple to use privacy manager for Android 6-12 (successor of XPrivacy).
Revoking Android permissions from apps often let apps crash or malfunction. XPrivacyLua solves this by feeding apps fake data instead of real data.
The tracking restrictions will work only if the code of the target app was not obfuscated. The other restrictions will work always.
Hide or fake?
It is possible to add custom restriction definitions, see this FAQ for details.
You can see all technical details here.
XPrivacyLua is supported on Android 6.0 Marshmallow and later. For Android 4.0.3 KitKat to Android 5.1.1 Lollipop you can use XPrivacy (unsupported though).
XPrivacyLua is supported for smartphones and tablets only. XPrivacyLua is not supported on emulators.
Hooking com.google.android.gms.location.ActivityRecognitionResult.extractResult (restriction Determine activity) is known to fail with script:25 vm error: java.lang.ClassNotFoundException: com.google.android.gms.location.DetectedActivity and script:28 attempt to call nil for some apps, like Google Maps and NetFlix, for yet unknown reasons.
LSPosed: please make sure that any app you want to restrict is in the 'scope' of LSposed.
Certificate fingerprints:
See here for a list of often asked questions.
Only the XPrivacyLua version released in the Xposed repository is supported.
XPrivacyLua with Island, etc is not supported.
See here about how you can donate.
Documentation
Contributions to this document and the frequently asked questions are prefered in the form of pull requests.
Translations
Source code
Building XPrivacyLua from source code is straightforward with Android Studio. It is expected that you can solve build problems yourself, so there is no support on building.
Source code contributions are prefered in the form of pull requests. Please contact me first to tell me what your plans are.
Please note that you agree to the license below by contributing, including the copyright.
XPrivacyLua uses:
GNU General Public License version 3
Copyright (c) 2017-2021 Marcel Bokhorst. All rights reserved
XPrivacyLua is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
XPrivacyLua is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with XPrivacyLua. If not, see https://www.gnu.org/licenses/.
Android is a trademark of Google Inc. Google Play is a trademark of Google Inc
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:19
MIUI 生活质量提升
English 丨 简体中文
此模块改善了我在 MIUI 12~14 以及 HyperOS 的日常使用体验,功能的详细描述可在模块设置内查看。
⭐ 本模块自豪地使用了 DexKit,一个高性能运行时 DEX 解析库。
Pictures/Screenshots
Movies/ScreenRecorder
注:
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:19
Spoof your device as different model for specific games to unlock higher FPS
To get started with Game Unlocker, follow these steps:
Ensure that your Android device is rooted.
Install the Xposed/Lsposed Framework on your device.
Download the Game Unlocker module from the releases section of this repository.
Install the downloaded apk :
Once you've installed and activated the Game Unlocker module, it will automatically spoof your device information for supported gaming applications. There's no additional configuration required. Simply force stop and open the games you want to play, and enjoy the benefits of device spoofing.
You can untick the game you don't want to spoof for the module scope. Force stop and relaunch is required.
Note: Keep in mind that device spoofing may violate the terms of service for some games or apps.
Report any suggestions/issues with games here
Click to expand the list of supported games
This project is licensed under the MIT License - see the LICENSE file for details.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:19
Removes the restriction when selecting folders (Sdcard, Download, data and obb) through the file manager on Android 11 and higher
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:27
一个用于flyme10系统的lsposed插件
主要功能如下:
禁用安装APK时候的安全检查
使用原生的apk安装界面
自动apk
隐藏桌面应用标签
屏蔽充电动画
侧滑返回震动
隐藏状态看网速
主题和谐
...
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:39
A new way to save your battery avoid cancer apps hacker it.
TSBattery 是一个旨在使 QQ、TIM、微信 变得更省电的开源 Xposed 模块。
如果在微信设置界面右上角你无法找到 TSBattery 的图标,请尝试同时激活 WeXposed (微X模块)。
GitHub CI | CI 自动构建 (测试版) | |
---|---|---|
Telegram CI 频道 | CI 自动构建 (测试版) | |
---|---|---|
GitHub Releases | 正式版 (稳定版) | |
---|---|---|
Xposed-Modules-Repo | 正式版 (稳定版) | |
---|---|---|
123 云盘 (密码:tsbt) | 正式版 (稳定版) | |
---|---|---|
本模块发布地址仅限于上述所列出的地址,从其他非正规渠道下载到的版本或对您造成任何影响均与我们无关。
1. 本软件免费、由兴趣使然、仅供学习交流而开发,如果你是从其他不明来源的渠道付费得到本软件,则你已上当受骗,若发现欢迎向我们举报。 2. 未经本人许可,禁止转载、搬运本软件的安装包及源代码到 GitHub 以外的平台并提供下载链接。
嘿,还请君留步!? 这里有 Android 开发工具、UI 设计、Gradle 插件、Xposed 模块和实用软件等相关项目。 如果下方的项目能为你提供帮助,不妨为我点个 star 吧! 所有项目免费、开源,遵循对应开源许可协议。 → 查看更多关于我的项目,请点击这里 ←
本模块使用 YukiHookAPI 构建
YukiHookAPI 是一个使用 Kotlin 重构的高效 Hook API 构建工具,让你的 Xposed 模块开发变得更加简单。
版权所有 © 2017 Fankes Studio(qzmmcn@163.com)
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:58
When the screen is off/locked/on this module allows you to: - send media play signals - send media next/previous signals - send volume up/down signals - launch app shortcut actions ...with any buttons your phone might have!
And also: - Disable original button functions - Send a play signal when devices get plugged in - Send signals only when selected devices are plugged in - Set music volume when play signals are sent - Set a media player to send the signals to or use the last used one - Launch the selected player before sending signals
Features can be greatly customized to suit all possible needs! Compatible with all Android versions from 7.1 to 12.
If you want to help other people see this app in your language, feel free to contribute on Crowdin: PBMC translation project on Crowdin
Donations welcome! (via the donation button on XDA)
How to report problems efficiently? - Enable the Debug log in PBMC settings - Use PBMC functions that don't work as intended - Export the logs from Xposed app and put them on PasteBin - Post on the XDA thread the link along with more information about your device
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:13
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:73
为各种 MIUI / HyperOS 设备解除多小窗限制
Unlock multi freeform limits for MIUI / HyperOS devices
GNU General Public License v3.0
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:23
传感器滤镜
降低传感器采样率(所有传感器降低到50HZ及以下)和采样深度(对加速度传感器取整)
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:13
Related:
This xposed module prevents the system (and also yourself) from allowing apps to always open supported links.
It also enables you to open supported links in apps which are not "verified" on Android 12 and above.
模块功能:打开 http / https 链接时总是询问,而不是直接在 app 中打开
副作用:手动设也没法直接用应用打开链接;Android 12+ 选择时会同时显示未“验证”的 app
理论支持 Android 6 及以后
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:13
Allow to use the official dark theme in Gmail on Android 9 and earlier.
No configuration needed, install and restart the phone.
⚠️ The module will now be updated to support new versions on request only ⚠️ To request an update send me a DM on Twitter or via email at support-android@alex193a.com ✉️
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:33
全名为 StarSkyVoyager
可以的话请前往 原代码仓库 点一下 star
想要很多很多 star
基于 我的分支的WooBoxForMIUI
使用了 EzXHelper2
和 KotlinXposedHelper
进行重构
现在也已经新增了不少其它我自己在用的功能
开发者: Voyager
目前仅基于我的 Mix4
的Android13
+MIUI14
开发
属于是给我的 Mix4
专用的模块
其他机型能用, 但会出现一些功能适配不广或直接不可用的情况
Android12
已经放弃适配, 低于 Android13
将会无法安装
Telegram Channel
: Voyager MIUI Update
Telegram Group
: StarVoyager Ideal
Github 开源代码仓库
: StarVoyager
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:14
杜比大喇叭β 3.X会有以下改变: - 编译版本提高至29并采用AndroidX API - 模块被嵌入到网易云音乐的设置中 - 由于Android R对可执行文件的进一步限制,摒弃了2.X手动选择脚本与Node的方式 - 当前版本以稳定为主,杜比大喇叭β将能无缝适配最新版网易云音乐,如有问题请提交issue - 因本人不使用太极,所以不保证太极等非root框架可以顺利运行,欢迎Fork适配
杜比大喇叭β版 访问密码:brdb
网易云音乐模块内嵌版(无需安装模块,适合不想用太极等框架的非root用户)
bin456789/Unblock163MusicClient-Xposed
Flysky12138/UnblockNeteaseMusic-Android
The MIT License
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:67
CustoMIUIzer module contains a variety of mods that will provide additional functionality for your MIUI device.
Module was written, tested and is mainly intended for MIUI 10-12.5 on Android 9-10. Mods are not guaranteed to fully work on any other versions, especially lower MIUI versions. APK installation is limited to Android 7+.
Framework must be 0.4.6.4 or 0.5.1.4+, versions in between won't work. Module must not be installed from Google Play if 0.4.6.4 is used with app list mode enabled.
Some mods might not work partially or fully unless module is applied to ALL packages.
Autogenerated list based on git files. - English version - Russian version - German version - Ukrainian version - Turkish version - Italian version - Spanish version - Chinese (Simplified) version - Portuguese (Brazil) version
You can send a detailed report with a description of your problem from CustoMIUIzer itself or create new issue on issue tracker.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:18
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:29
基于Xposed的虚拟摄像头
安装此模块,并在Xposed中启用此模块,Lsposed等包含作用域的框架需要选择目标app,无需选择系统框架。
在系统设置中,授予目标应用读取本地存储的权限,并强制结束目标应用程序。若应用程序未申请此权限,请见步骤3。
打开目标应用,若应用未能获得读取存储的权限,则会以气泡消息提示,Camera1
目录被重定向至应用程序私有目录/[内部存储]/Android/data/[应用包名]/files/Camera1/
。若未提示,则默认Camera1
目录为/[内部存储]/DCIM/Camera1/
。若目录不存在,请手动创建。
注意:私有目录下的
Camera1
仅对该应用单独生效。
在目标应用中打开相机预览,会以气泡消息提示“宽:……高:……”,需要根据此分辨率数据制作替换视频,放置于Camera1
目录下,并命名为virtual.mp4
,若打开相机并无提示消息,则无需调整视频分辨率。
若在目标应用中拍照却显示真实图片,且出现气泡消息发现拍照
和分辨率,则需根据此分辨率数据准备一张照片,命名为1000.bmp
,放入Camera1
目录下(支持其它格式改后缀为bmp)。如果拍照时无气泡消息提示,则1000.bmp
无效。
如果需要播放视频的声音,需在/[内部存储]/DCIM/Camera1/
目录下创建no-silent.jpg
文件。(全局实时生效)
如果需要临时停用视频替换,需在/[内部存储]/DCIM/Camera1/
目录下创建disable.jpg
文件。(全局实时生效)
如果觉得Toast消息烦,可以在/[内部存储]/DCIM/Camera1/
目录下创建no_toast.jpg
文件。(全局实时生效)
目录重定向消息默认只显示一次,如果错过了目录重定向的Toast消息,可以在/[内部存储]/DCIM/Camera1/
目录下创建force_show.jpg
文件来覆盖默认设定。(全局实时生效)
如果需要为每一个应用程序分配视频,可以在/[内部存储]/DCIM/Camera1/
目录下创建private_dir.jpg
强制使用应用程序私有目录。(全局实时生效)
注意:6~10的配置开关均在应用程序中,您可以快捷地在应用程序中配置,也可以手动创建文件。
A1. 前置摄像头方向问题?
Q1. 大多数情况下,替换前置摄像头的视频需要水平翻转并右旋90度,并且视频处理后的分辨率应与气泡消息内分辨率相同。但有时这并不需要,具体请根据实际情况判断。
Q2. 画面黑屏,相机启动失败?
A2. 目前有些应用并不能成功替换(特别是系统相机)。或者是因为视频路径不对(是否创建了两级Camera1目录,如./DCIM/Camera1/Camera1/virtual.mp4
,但只需要一级目录)。
Q3. 画面花屏?
A3. 视频分辨率不对。
Q4. 画面扭曲,变形?
A4. 请使用剪辑软件修改原视频来匹配屏幕。
Q5. 创建disable.jpg
无效?
A5. 如果应用版本<=4.0
,那么[内部存储]/DCIM/Camera1
目录下的文件对具有访问存储权限的应用生效,其余无权限应用应在私有目录下创建
如果应用版本>=4.1
,那么应在[内部存储]/DCIM/Camera1
创建,无论目标应用是否具有权限。
请直接在issues中反馈,如果为BUG反馈,请附带Xposed模块日志信息。
提供HOOK思路: https://github.com/wangwei1237/CameraHook
H264硬解码: https://github.com/zhantong/Android-VideoToImages
JPEG转YUV: https://blog.csdn.net/jacke121/article/details/73888732
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:65
知乎去广告Xposed模块
蓝奏云 密码:1hax
This project is licensed under the GNU General Public Licence, version 3.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:19
MIUI小窗增强扩展模块,实现类Flyme的手势操作逻辑
开发者:酷安@LiuYi_GL
更新日志:Update
Android 13、Android 12(未测试)
MIUI 14
xposed v93,推荐使用LSPosed Framework
点击通知打开小窗
控制中心
使用小窗打开快捷方式
应用间交互
应用间分享
平行小窗
微信需要添加至作用域
杂项
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:31
An Android Xposed module to remove sponsored messages of Telegram.
Also allows you to copy or save messages when "Restrict saving content" is enabled. Forwarding messages is still not working due to server limitation.
This project is licensed under the GNU General Public Licence, version 3.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:13
类型 | 特性 | 发行版链接 | 下载量 |
---|---|---|---|
整合版 NGA | 无需 Xposed 框架, 覆盖安装原版 App, 体积大 | ||
独立插件版 | 依赖 Xposed 框架, 独立更新, 体积小 |
历时一年的开发, 所有功能趋于稳定, 后续不再开发新功能
同时兼容 Lspatch, 支持 9.9.x 版本的 NGA 客户端, 理论向后兼容
![]() |
![]() |
![]() |
---|---|---|
TW41eecZ199QK6zujgKP4j1cz2bXzRus3c |
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:32
Alfa Bank Patcher
Скрытие рекламы различного формата и управление push уведомлениями в приложении Альфа Банк
This is a module for the russian banking application Alfa-Bank, you don't need to use it, app working only in Russia. This module has support only for the Russian language.
上传时间:暂无
作者:暂无
文件大小:暂无
下载量:13